

fn main() {
    println!("所有权与借用");
    

    // https://zh.practice.rs/ownership/ownership.html
    // 部分 move
    #[derive(Debug)]
    struct Person{
        name: String,
        age: Box<u8>,
    }

    let person = Person{
        name: String::from("Neo"),
        age: Box::new(44),
    };
    // NOTE: 下面结构成员的解构方式——这叫模式匹配
    // person.name的所有权发生了转移（到name变量）
    // ref age 相当于：let age = &person.age;// 只是引用
    let Person{name, ref age} = person;
    println!("name {}", name);
    println!("age: {}", age);

    // println!("struct name: {}", person.name);// 错误：所有权发生了转换
    println!("struct age:{}", person.age);
}